<?php

namespace Common\Model;

use Think\Model;

/**
 * 文档的目录模型
 */
class CateModel extends Model {

    const CATE_KEY = 'cate:';   // 文档的目录缓存键名

    /**
     * 添加一条目录数据
     * @param $data
     * @return bool
     */
    public static function addData($data){
        if($result = M('Cate')->add($data)){
            self::clearCache($data['did']);
            return true;
        }
        return false;
    }

    /**
     * 获取指定文档的目录信息
     * @param $did
     * @return mixed
     */
    public static function getCateById($did){
        $key = self::CATE_KEY.$did;
        $result = S($key);
        if(false === $result){
            $result = M('Cate')->where(['did' => $did])->field('content,count,create')->order(['create' => 'desc'])->find();
            if(false !== $result){
                S($key, is_null($result) ? [] : $result);
            }
        }
        return $result;
    }

    /**
     * 根据cid获取文章标题
     * @param $cateString
     * @param $cid
     * @return string
     */
    public static function getTitleByCid($cateString, $cid){
        if($cateString['content'] && preg_match('/{"id":'.$cid.',"name":"(.*?)"[(,")|}]/i', $cateString['content'], $match)){
            return $match[1] ? : '未定义标题';
        }
        return '未定义标题';
    }

    public static function clearCache($did){
        $key = self::CATE_KEY.$did;
        S($key, null);
    }

    /**
     * ///////////////////////////////////////////////////////////////////////
     * ///////////////////////////////////////////////////////////////////////
     */

//    /**
//     * 获取HTML页面所需的目录信息
//     * @param $did
//     * @param $type string ['e','d']
//     * @return array|string
//     */
//    public static function getCateHtml($did, $type){
//        $cateInfo = self::getCateById($did);
//        if(!$cateInfo){
//            return $type === 'edit' ? array('count' => 0, 'content' => '<ul></ul>') : '<ul></ul>';
//        }
//        $resultStr = '<ul></ul>';
//        if($cateInfo['content']){
//            $resultStr = self::decodeCateString(json_decode($cateInfo['content'], true), $did, $type);
//        }
//        return $type === 'e' ? array('count' => $cateInfo['count'], 'content' => $resultStr) : $resultStr;
//    }
//
//    /**
//     * 递归解析目录结构生成目录字符串
//     * @param $cate
//     * @param $did
//     * @param $type
//     * @return string
//     */
//    private static function decodeCateString($cate, $did, $type){
//        $result = '<ul>';
//        foreach($cate as $k => $v){
//            $result .= '<li><a href="/'.$type.'/'.$did.'/c/'.$v['id'].'.html" data-cid="'.$v['id'].'">'.$v['name'].'</a>';
//            if($v['child']){
//                $result .= self::decodeCateString($v['child'], $did, $type);
//            }
//        }
//        $result .= '</ul>';
//        return $result;
//    }

}